From 43da2b83a2223d4e90458d369e8d87942b2f6712 Mon Sep 17 00:00:00 2001 From: "tw275@labyrinth.cl.cam.ac.uk" Date: Wed, 28 Jul 2004 17:39:46 +0000 Subject: [PATCH] bitkeeper revision 1.1108.32.1 (4107e4e2YMdWDsDVr_ptn6faQ7KwmA) Virtually finished Domain Creation from sv. Needs work to make it more robust. --- tools/python/xen/sv/CreateDomain.py | 70 ++++++++++++++++++++++++++--- 1 file changed, 65 insertions(+), 5 deletions(-) diff --git a/tools/python/xen/sv/CreateDomain.py b/tools/python/xen/sv/CreateDomain.py index 62123871bd..a3b541d3fb 100644 --- a/tools/python/xen/sv/CreateDomain.py +++ b/tools/python/xen/sv/CreateDomain.py @@ -1,5 +1,10 @@ from xen.sv.Wizard import * from xen.sv.util import * +from xen.sv.GenTabbed import PreTab + +from xen.xm.create import make_config + +from xen.xend.XendClient import server class CreateDomain( Wizard ): def __init__( self, urlWriter ): @@ -17,15 +22,17 @@ class CreatePage0( Sheet ): def __init__( self, urlWriter ): Sheet.__init__( self, urlWriter, "General", 0 ) - self.addControl( InputControl( 'vm_name', 'VM Name', 'VM Name:' ) ) + self.addControl( InputControl( 'name', 'VM Name', 'VM Name:' ) ) self.addControl( InputControl( 'memory', '64', 'Memory (Mb):' ) ) + self.addControl( InputControl( 'cpu', '0', 'CPU:' ) ) class CreatePage1( Sheet ): def __init__( self, urlWriter ): Sheet.__init__( self, urlWriter, "Setup Kernel Image", 1 ) - self.addControl( InputControl( 'kernel_image', '/boot/vmlinuz-2.4.26-xenU', 'Kernel Image:' ) ) - self.addControl( InputControl( 'kernel_params', '', 'Kernel Command Line Parame:' ) ) + self.addControl( InputControl( 'builder', 'linux', 'Kernel Type:' ) ) + self.addControl( InputControl( 'kernel', '/boot/vmlinuz-2.4.26-xenU', 'Kernel Image:' ) ) + self.addControl( InputControl( 'extra', '', 'Kernel Command Line Parame:' ) ) class CreatePage2( Sheet ): @@ -45,8 +52,9 @@ class CreatePage3( Sheet ): for i in range( int( num_vbds ) ): self.addControl( InputControl( 'vbd%s_dom0' % i, '/dev/sda%i' % i, 'Device %s name:' % i ) ) self.addControl( InputControl( 'vbd%s_domU' % i, '/dev/sda%i' % i, 'Virtualized device %s:' % i ) ) + self.addControl( InputControl( 'vbd%s_mode' % i, 'w', 'Device %s mode:' % i ) ) - self.addControl( InputControl( 'root_dev', '/dev/sda1', 'Root device (in VM):' ) ) + self.addControl( InputControl( 'root', '/dev/sda1', 'Root device (in VM):' ) ) Sheet.write_BODY( self, request ) @@ -65,6 +73,58 @@ class CreateFinish( Sheet ): Sheet.__init__( self, urlWriter, "All Done", 5 ) def write_BODY( self, request ): - request.write( "
%s
" % sxp2prettystring( string2sxp( self.passback ) ) ) + fin_sxp = string2sxp( self.passback ) + + xend_sxp = self.translate_sxp( fin_sxp ) + + pt = PreTab( sxp2prettystring( xend_sxp ) ) + pt.write_BODY( request ) + + server.xend_domain_create( xend_sxp ) + request.write( "

" % self.passback ) request.write( "

" % self.location ) + + def translate_sxp( self, fin_sxp ): + fin_hash = ssxp2hash( fin_sxp ) + + vals = OptVals() + + setattr(vals, "name", fin_hash.get( 'name' ) ) + setattr(vals, "memory", fin_hash.get( 'memory' ) ) + setattr(vals, "cpu", fin_hash.get( 'cpu' ) ) + + setattr(vals, "builder", fin_hash.get( 'builder' ) ) + setattr(vals, "kernel", fin_hash.get( 'kernel' ) ) + setattr(vals, "root", fin_hash.get( 'root' ) ) + setattr(vals, "extra", fin_hash.get( 'extra' ) ) + + vbds = [] + + for i in range( int( fin_hash.get( 'num_vbds' ) ) ): + vbds.append( ( fin_hash.get('vbd%s_domU' % i ), fin_hash.get( 'vbd%s_dom0' % i ), fin_hash.get( 'vbd%s_mode' % i ) ) ) + + vals.disk = vbds + + vals.pci = [] + + vals.vif = [] + vals.nics = 1 + + vals.blkif = None + vals.netif = None + vals.restart = None + vals.console = None + vals.ramdisk = None + + #todo: setup ip addr stuff + + vals.cmdline_ip = None + + return make_config( vals ) + + +class OptVals: + """Class to hold option values. + """ + pass \ No newline at end of file -- 2.30.2